home *** CD-ROM | disk | FTP | other *** search
/ PsL Monthly 1993 December / PSL Monthly Shareware CD-ROM (December 1993).iso / prgmming / win / general / cdbw.exe / DBMGR.H < prev    next >
Text File  |  1991-10-29  |  14KB  |  335 lines

  1. /*
  2.  *  dbmgr.h
  3.  *
  4.  *  This file contains structures, macros and #defines for
  5.  *  the database layout.
  6.  *
  7.  *  Copyright (C) 1989, 1990, 1991 by Daytris.  All rights reserved.
  8.  */
  9.  
  10. /* DBTALK prototypes */
  11. DWORD FAR PASCAL DbClose( HANDLE);
  12. DWORD FAR PASCAL DbFileGetLockStatus( HANDLE, LPSTR, LPBYTE);
  13. DWORD FAR PASCAL DbFileLock( HANDLE, LPSTR);
  14. DWORD FAR PASCAL DbFileUnlock( HANDLE, LPSTR);
  15. DWORD FAR PASCAL DbFlush( HANDLE);
  16. DWORD FAR PASCAL DbGetNbrClients( HANDLE, LPWORD);
  17. DWORD FAR PASCAL DbOpen( HWND, LPSTR, LPSTR, BOOL, LPHANDLE);
  18. DWORD FAR PASCAL DbRecordAdd( HANDLE, LPSTR, HANDLE);
  19. DWORD FAR PASCAL DbRecordDelete( HANDLE, LPSTR);
  20. DWORD FAR PASCAL DbRecordFindByKey( HANDLE, LPSTR, LPSTR, HANDLE);
  21. DWORD FAR PASCAL DbRecordFindFirst( HANDLE, LPSTR, LPSTR);
  22. DWORD FAR PASCAL DbRecordFindLast( HANDLE, LPSTR, LPSTR);
  23. DWORD FAR PASCAL DbRecordFindNext( HANDLE, LPSTR, LPSTR);
  24. DWORD FAR PASCAL DbRecordFindPrev( HANDLE, LPSTR, LPSTR);
  25. DWORD FAR PASCAL DbRecordGetByKey( HANDLE, LPSTR, LPSTR, HANDLE, HANDLE);
  26. DWORD FAR PASCAL DbRecordGetCurrency( HANDLE, LPSTR, HANDLE);
  27. DWORD FAR PASCAL DbRecordGetCurrent( HANDLE, LPSTR, HANDLE);
  28. DWORD FAR PASCAL DbRecordGetFirst( HANDLE, LPSTR, LPSTR, HANDLE);
  29. DWORD FAR PASCAL DbRecordGetLast( HANDLE, LPSTR, LPSTR, HANDLE);
  30. DWORD FAR PASCAL DbRecordGetNext( HANDLE, LPSTR, LPSTR, HANDLE);
  31. DWORD FAR PASCAL DbRecordGetPrev( HANDLE, LPSTR, LPSTR, HANDLE);
  32. DWORD FAR PASCAL DbRecordUpdate( HANDLE, LPSTR, HANDLE);
  33. DWORD FAR PASCAL DbRecordUpdCurrency( HANDLE, LPSTR, HANDLE);
  34. DWORD FAR PASCAL DbSetAdd( HANDLE, LPSTR, LPSTR);
  35. DWORD FAR PASCAL DbSetDelete( HANDLE, LPSTR, LPSTR);
  36. DWORD FAR PASCAL DbSetFindFirst( HANDLE, LPSTR, LPSTR);
  37. DWORD FAR PASCAL DbSetFindLast( HANDLE, LPSTR, LPSTR);
  38. DWORD FAR PASCAL DbSetFindNext( HANDLE, LPSTR, LPSTR);
  39. DWORD FAR PASCAL DbSetFindPrev( HANDLE, LPSTR, LPSTR);
  40. DWORD FAR PASCAL DbSetGetFirst( HANDLE, LPSTR, LPSTR, HANDLE);
  41. DWORD FAR PASCAL DbSetGetLast( HANDLE, LPSTR, LPSTR, HANDLE);
  42. DWORD FAR PASCAL DbSetGetNext( HANDLE, LPSTR, LPSTR, HANDLE);
  43. DWORD FAR PASCAL DbSetGetOwner( HANDLE, LPSTR, LPSTR, HANDLE);
  44. DWORD FAR PASCAL DbSetGetPrev( HANDLE, LPSTR, LPSTR, HANDLE);
  45. DWORD FAR PASCAL XDbRecordAdd( HANDLE, LPSTR, LPVOID, short);
  46. DWORD FAR PASCAL XDbRecordFindByKey( HANDLE, LPSTR, LPSTR, LPVOID, short);
  47. DWORD FAR PASCAL XDbRecordGetByKey( HANDLE, LPSTR, LPSTR, LPVOID, short, LPVOID, short);
  48. DWORD FAR PASCAL XDbRecordGetCurrency( HANDLE, LPSTR, LPVOID, short);
  49. DWORD FAR PASCAL XDbRecordGetCurrent( HANDLE, LPSTR, LPVOID, short);
  50. DWORD FAR PASCAL XDbRecordGetFirst( HANDLE, LPSTR, LPSTR, LPVOID, short);
  51. DWORD FAR PASCAL XDbRecordGetLast( HANDLE, LPSTR, LPSTR, LPVOID, short);
  52. DWORD FAR PASCAL XDbRecordGetNext( HANDLE, LPSTR, LPSTR, LPVOID, short);
  53. DWORD FAR PASCAL XDbRecordGetPrev( HANDLE, LPSTR, LPSTR, LPVOID, short);
  54. DWORD FAR PASCAL XDbRecordUpdate( HANDLE, LPSTR, LPVOID, short);
  55. DWORD FAR PASCAL XDbRecordUpdCurrency( HANDLE, LPSTR, LPVOID, short);
  56. DWORD FAR PASCAL XDbSetGetFirst( HANDLE, LPSTR, LPSTR, LPVOID, short);
  57. DWORD FAR PASCAL XDbSetGetLast( HANDLE, LPSTR, LPSTR, LPVOID, short);
  58. DWORD FAR PASCAL XDbSetGetNext( HANDLE, LPSTR, LPSTR, LPVOID, short);
  59. DWORD FAR PASCAL XDbSetGetOwner( HANDLE, LPSTR, LPSTR, LPVOID, short);
  60. DWORD FAR PASCAL XDbSetGetPrev( HANDLE, LPSTR, LPSTR, LPVOID, short);
  61.  
  62. /* Error defines */
  63. #define E_TESTDRIVE     -5
  64. #define E_WINALLOC      -4
  65. #define E_LOADMODULE    -3
  66. #define E_INVALIDCASE   -2
  67. #define E_DOS           -1
  68. #define E_NORECNAME     1
  69. #define E_NOFLDNAME     2
  70. #define E_INVALIDSET    3
  71. #define E_NOTAKEY       4
  72. #define E_NOTFOUND      5
  73. #define E_NEXTGUESS     6
  74. #define E_NOCURRENT     7 
  75. #define E_NONEXT        8 
  76. #define E_NOPREV        9 
  77. #define E_NOMEMBER      10
  78. #define E_NOOWNER       11
  79. #define E_FILELOCKED    12
  80. #define E_HASMEMBER     13
  81. #define E_HASOWNER      14
  82.  
  83. /************************************************
  84.  * CDB Internals
  85.  ************************************************/
  86.  
  87. /* DBCALL.C prototypes */
  88. DWORD DbCall( HANDLE, WORD, ...);
  89. DWORD XDbCall( HANDLE, WORD, ...);
  90.  
  91. /* CDB Server Name */
  92. #define CDB_SERVER          "dbserver.exe"
  93. #define CDB_SERVER_CLASS    "CDBServerClass"
  94.  
  95. /* Structure passed between client and server */
  96. typedef struct sCDBTALK
  97.     {
  98.     WORD    wCall;
  99.     char    szName1[67];
  100.     char    szName2[32];
  101.     HANDLE  hData1;
  102.     HANDLE  hData2;
  103.     } CDBTALK;
  104.  
  105. /* Type definitions */
  106. typedef char            CHAR;
  107. typedef unsigned char   UCHAR;
  108. typedef short           INT;
  109. typedef unsigned short  UINT;
  110. typedef unsigned long   ULONG;
  111.  
  112.  
  113. /* Define BORLANDC_DBSERVER when recompiling the dbserver.exe with  */
  114. /* Borland C++.  Borland C++ does not like the ... declaration.     */
  115.  
  116. #ifndef BORLANDC_DBSERVER
  117. INT cdb( INT, ...);
  118. #endif
  119.  
  120. /* Database call defines */
  121. #define D_OPEN                  0
  122. #define D_CLOSE                 1
  123. #define D_FLUSH                 2
  124. #define D_GET_CURRENCY          3
  125. #define D_UPDATE_CURRENCY       4
  126. #define D_FIND_FIRST_RECORD     5
  127. #define D_FIND_LAST_RECORD      6
  128. #define D_FIND_NEXT_RECORD      7
  129. #define D_FIND_PREV_RECORD      8
  130. #define D_FIND_RECORD_BY_KEY    9
  131. #define D_GET_FIRST_RECORD      10
  132. #define D_GET_LAST_RECORD       11
  133. #define D_GET_NEXT_RECORD       12
  134. #define D_GET_PREV_RECORD       13
  135. #define D_GET_RECORD_BY_KEY     14
  136. #define D_GET_CURRENT_RECORD    15
  137. #define D_ADD_RECORD            16
  138. #define D_UPDATE_RECORD         17
  139. #define D_DELETE_RECORD         18
  140. #define D_FIND_FIRST_SET        19
  141. #define D_FIND_LAST_SET         20
  142. #define D_FIND_NEXT_SET         21
  143. #define D_FIND_PREV_SET         22
  144. #define D_GET_FIRST_SET         23
  145. #define D_GET_LAST_SET          24
  146. #define D_GET_NEXT_SET          25
  147. #define D_GET_PREV_SET          26
  148. #define D_GET_SET_OWNER         27
  149. #define D_ADD_SET               28
  150. #define D_DELETE_SET            29
  151. #define D_LOCK_FILE             30
  152. #define D_UNLOCK_FILE           31
  153. #define D_GET_LOCK_STATUS       32
  154. #define D_OPEN_DUPLICATE        33
  155. #define D_GET_NBR_CLIENTS       34
  156.  
  157. #define NBRHANDLES      8       /* Maximum number of file handles       */
  158. #define MAXKEY          8       /* Maximum # of keys per key record     */
  159. #define KEYPAGESIZE     512     /* Key page buffer size                 */
  160. #define NBRPAGES        16      /* Number of key page buffers           */
  161. #define DATAPAGESIZE    2048    /* Data page buffer size                */
  162. #define DATASLOTSIZE    1024    /* Data file slot buffer size           */
  163.  
  164. /* Testdrive version defines */
  165. #define TESTDRIVE_MAX_RECORDS   50L
  166.  
  167. /* Field index structure defines */
  168. #define KEY_FIELD       0x01
  169. #define SET_KEY_FIELD   0x01
  170.  
  171. /* Handle index structure defines */
  172. #define FILE_MODIFIED   0x01
  173.  
  174. /* Key file index structure defines */
  175. #define PAGE_FULL       0x01
  176.  
  177. /* Page index structure defines */
  178. #define PAGE_DIRTY      0x01
  179.  
  180. /* DataBase structures and unions */
  181. union  type
  182.     {
  183.     CHAR                charval;
  184.     INT                 intval;
  185.     LONG                longval;
  186.     float               floatval;
  187.     double              doubleval;
  188.     CHAR                *ptrval;
  189.     UCHAR               ucharval;
  190.     UINT                uintval;
  191.     ULONG               ulongval;
  192.     };
  193.  
  194. struct dbheader                         /* 128 bytes                    */
  195.     {               
  196.     CHAR                title[96];      /* DBD title                    */
  197.     UINT                totrecs;        /* Total number of records      */
  198.     UINT                totowns;        /* Total number of owners       */
  199.     UINT                totmems;        /* Total number of members      */
  200.     UINT                totflds;        /* Total number of fields       */
  201.     CHAR                prefix[6];      /* File prefix description      */
  202.     CHAR                filler[18];
  203.     };
  204.  
  205. struct record_index                     /* 46 bytes                     */
  206.     {
  207.     UINT                firstown;       /* First owner                  */
  208.     UINT                nbrowns;        /* Number of owners             */
  209.     UI